# -*- coding: utf-8 -*-


from app.models import (Person, Semester, Studiengang, Modulgruppe, Veranstaltung,
                        Pruefung, Modulbaustein, Modul)
from django.contrib import admin


class PersonAdmin(admin.ModelAdmin):
    pass


class ModulzugehoerigkeitInline(admin.TabularInline):
    model = Modul.bausteine.through
    extra = 3


class ModulAdmin(admin.ModelAdmin):
    fieldsets = (
        (None, {
            'fields': ('signatur', 'titel', 'modulgruppe', 'verantwortlicher',
                       'turnus', 'lp_voraussetzungen', 'bausteine') 
        }),
        (u'Modulspezifische Angaben', {
            'fields': ('fachgebiet', 'inhalt', 'lernziele', 'leistungspunkte',
                       'literatur', 'semester_empfehlung', 'dauer', 'voraussetzungen',),
            'description': u'Bei Nicht-Angabe werden die ' \
                           u'entsprechenden Angaben aus den Modulbausteinen übernommen.'
        }),
    )


class ModulgruppeInline(admin.StackedInline):
    model = Modulgruppe
    extra = 3


class StudiengangAdmin(admin.ModelAdmin):
    inlines = [ModulgruppeInline]


class ModulgruppeAdmin(admin.ModelAdmin):
    pass
    

class VeranstaltungAdmin(admin.ModelAdmin):
    fieldsets = (
        (None, {
            'fields': ('semester', 'titel', 'nummer', 'lehrformen', 'arbeitsaufwand', 'ort',)
        }),
        (u'Veranstaltungsspezifische Angaben', {
            'fields': ('fachgebiet', 'inhalt', 'lernziele', 'leistungspunkte',
                       'literatur', 'semester_empfehlung', 'dauer', 'voraussetzungen',),
            'description': u'Diese Angaben ergänzen die allgemeinen Angaben.',
        })    
    )


class PruefungAdmin(admin.ModelAdmin):
    fieldsets = (
        (None, {
            'fields': ('semester', 'baustein', 'pruefer', 'modalitaeten', 'veranstaltungen', 'unabhaengig',)
        }),
        (u'Prüfungsspezifische Angaben', {
            'fields': ('fachgebiet', 'inhalt', 'lernziele', 'leistungspunkte',
                       'literatur', 'semester_empfehlung', 'dauer', 'voraussetzungen',),
            'description': u'Bei Nicht-Angabe werden die ' \
                           u'entsprechenden Angaben aus den Veranstaltungen übernommen.'        
        })
    )


class SemesterAdmin(admin.ModelAdmin):
    pass


class ModulbausteinAdmin(admin.ModelAdmin):
    fieldsets = (
        (None, {
            'fields': ('titel',)
        }),
        (u'Baustein-spezifische Angaben', {
            'fields': ('fachgebiet', 'inhalt', 'lernziele', 'leistungspunkte',
                       'literatur', 'semester_empfehlung', 'dauer', 'voraussetzungen',),
            'description': u'Bei Nicht-Angabe werden die ' \
                           u'entsprechenden Angaben aus dem jeweiligen Semester übernommen.'
        }), 
    )
    inlines = [ModulzugehoerigkeitInline]


admin.site.register(Person, PersonAdmin)
admin.site.register(Studiengang, StudiengangAdmin)
admin.site.register(Modul, ModulAdmin)
admin.site.register(Modulgruppe, ModulgruppeAdmin)
admin.site.register(Semester, SemesterAdmin)
admin.site.register(Modulbaustein, ModulbausteinAdmin)
admin.site.register(Pruefung, PruefungAdmin)
admin.site.register(Veranstaltung, VeranstaltungAdmin)

